import 'package:flutter/material.dart';
import 'package:english_words/english_words.dart';

//StatefulWidget 持有的状态可能在widget生命周期中发生变化
void main() => runApp(new MyApp());

// Stateless widgets 是不可变的, 这意味着它们的属性不能改变 - 所有的值都是最终的.
// Stateful widgets 持有的状态可能在widget生命周期中发生变化. 实现一个 stateful widget 至少需要两个类:
//该应用程序继承了 StatelessWidget，这将会使应用本身也成为一个widget。 在Flutter中，大多数东西都是widget，包括对齐(alignment)、填充(padding)和布局(layout)
class MyApp extends StatelessWidget {//无状态小部件
  @override
  Widget build(BuildContext context) {//widget的主要工作是提供一个build()方法来描述如何根据其他较低级别的widget来显示自己。
    final wordPair = new WordPair.random();

    return new MaterialApp(
      title: 'Welcome to Flutter',
      home: new Scaffold(//Scaffold 是 Material library 中提供的一个widget, 它提供了默认的导航栏、标题和包含主屏幕widget树的body属性。widget树可以很复杂。
        appBar: new AppBar(
          title: new Text('Welcome to Flutter'),
        ),
        body: new Center(//本示例中的body的widget树中包含了一个Center widget, Center widget又包含一个 Text 子widget。 Center widget可以将其子widget树对其到屏幕中心。
          // child: new Text('Hello World'),
          child: new RandomWords(),
        ),
      ),
    );
  }
}

class RandomWords extends StatefulWidget {// 状态小部件
  @override
  createState() => new RandomWordsState();
}

class RandomWordsState extends State<RandomWords> {//状态
  @override
  Widget build(BuildContext context) {
    final wordPair = new WordPair.random();
    return new Text(wordPair.asPascalCase);
  }
}